#include "consulta_listaprecios.h"

Consulta_Listaprecios::Consulta_Listaprecios(QWidget *parent):VentanaConsulta(parent)
{
    indiceBusqueda=0;
    this->setWindowTitle("Consultar Lista Precios");

    modeloConsulta->setTable("listaprecios");
    modeloConsulta->setHeaderData(0,Qt::Horizontal,"id_lista_precio");
    modeloConsulta->setHeaderData(1,Qt::Horizontal,"Nombre");
    modeloConsulta->setRelation(2, QSqlRelation("analisis", "id_analisis", "nombre"));
    modeloConsulta->setHeaderData(2,Qt::Horizontal,"Análisis");
    modeloConsulta->setHeaderData(3,Qt::Horizontal,"Precio");
    modeloConsulta->setHeaderData(4,Qt::Horizontal,"Estado");
    modeloConsulta->select();

    filtro->setSourceModel(modeloConsulta);

    ui->tableView->setModel(filtro);
    QStringList elementos;
    elementos << "Nombre" << "Análisis";
    ui->comboBuscarPor->addItems(elementos);
    ui->tableView->setModel(filtro);
    ui->tableView->hideColumn(0);
    ui->tableView->hideColumn(4);

    ui->textoBusqueda->setPlaceholderText("Nombre");

    filtro->beginDeclareFilter();
    filtro->setFilter(4, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
    filtro->endDeclareFilter();

}

void Consulta_Listaprecios::on_registrar_clicked()
{
    Reg_Mod_ListaPrecios *registro = new Reg_Mod_ListaPrecios();
    registro->exec();
    modeloConsulta->select();
    delete registro;
}

void Consulta_Listaprecios::on_modificar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);

    if(indexes.count() == 1){
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);
        int id = ui->tableView->model()->data(index).toInt();


        QDjangoQuerySet<ListaPrecios> listaprecios;
        ListaPrecios *list = listaprecios.filter(QDjangoWhere("id_lista_precio", QDjangoWhere::Equals, id)).at(0);

        Reg_Mod_ListaPrecios *modificacion = new Reg_Mod_ListaPrecios(this, list);
        modificacion->exec();
        modeloConsulta->select();
        list->deleteLater();
        delete modificacion;

    }
    else
    {
         cuadroMensaje("Debe seleccionar una fila", "");
    }
}

void Consulta_Listaprecios::on_eliminar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);

    if(indexes.count() > 0) {

        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);
        int id = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<ListaPrecios> listaprecios;
        ListaPrecios *list = listaprecios.filter(QDjangoWhere("id_lista_precio", QDjangoWhere::Equals, id)).at(0);
        QMessageBox m;

        int resp = cuadroMensaje("<p align=center><b>Confirmar Cambios</b></p>", "<p align=center>Esta seguro de que desea dar de baja al item seleccionado " + list->getNombre() + "?</p>", "advertencia");

        if(resp == QMessageBox::Ok)
        {
            list->setEstado("inactivo");
            list->save();
            delete list;
            modeloConsulta->select();
        }
    }
    else
    {
       cuadroMensaje("Debe seleccionar una fila", "");
    }
}

void Consulta_Listaprecios::on_textoBusqueda_textChanged(const QString &arg1)
{
    filtro->beginDeclareFilter();
    filtro->setFilter(indiceBusqueda, QVariant(arg1), Qt::DisplayRole, Qt::MatchContains);
    filtro->endDeclareFilter();
}

void Consulta_Listaprecios::on_comboBuscarPor_currentTextChanged(const QString &arg1)
{

    if(arg1 == "Nombre") indiceBusqueda = 1;
    else if(arg1 == "Análisis") indiceBusqueda = 2;
    ui->textoBusqueda->setPlaceholderText(arg1);
}


void Consulta_Listaprecios::on_refrescarTabla_clicked()
{

    for(int i = 0;i<ui->tableView->model()->columnCount()-1;i++)
    {
        filtro->removeFilter(i);
    }
    ui->comboBuscarPor->setCurrentIndex(0);
}


void Consulta_Listaprecios::on_checkActivos_toggled(bool checked)
{

    if(checked)
    {
        filtro->beginDeclareFilter();
        filtro->setFilter(4, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();
    }
    else filtro->removeFilter(4);

}

void Consulta_Listaprecios::on_tableView_doubleClicked()
{
   Consulta_Listaprecios::on_modificar_clicked();
}

